(function(){
var CrawlTitle=function()
	{
	this.GetArgument(arguments[0],{Link:null,AjaxCallName:null});
	setTimeout(fastCSharp.ThisFunction(this,this.Request),1);
	};
fastCSharp.Copy(CrawlTitle,{
Titles:{},
Links:[],
Get:function(Link,CallBack)
	{
	var Value=this.Titles[Link];
	if(!Value)	this.Links.push(this.Titles[Link]=Value={Link:Link,Title:Link,CallBack:[]});
	if(CallBack&&!Value.IsTitle&&Value.CallBack.IndexOf(CallBack)==-1)	Value.CallBack.push(CallBack);
	return Value;
	},
Request:function(AjaxCallName)
	{
	for(var Index=this.Links.length;Index;new CrawlTitle({Link:this.Links[--Index],AjaxCallName:AjaxCallName}));
	this.Links=[];
	},
TryRequest:function(AjaxCallName)
	{
	if(this.Links.length)	setTimeout(fastCSharp.ThisFunction(this,this.Request,[AjaxCallName]),0);
	}
		});
(fastCSharp.Functions.CrawlTitle=CrawlTitle).Inherit(fastCSharp.BaseFunction,{
Request:function()
	{
	var Link=this.Link.Link,Index=Link.indexOf('#');
	if((Index+1)&&Link.charAt(Index+1)!='!')	Link=Link.substring(0,Index);
	fastCSharp.Ajax(fastCSharp.ThisFunction(this,this.OnLink),this.AjaxCallName,{link:Link});
	},
OnLink:function(Value)
	{
	this.Link.IsTitle=1;
	if(Value.__AJAXRETURN__)
		{
		this.Link.Title=fastCSharp.DeleteElements.Html(Value.__AJAXRETURN__).Text();
		for(var Index=this.Link.CallBack.length;Index;this.Link.CallBack[--Index](this.Link));
		}
	}
		});
})();